package dao

import (
	"time"
)

// 这是 UmsRole 的全局公开dao对象，被service层调用!
var UmsRoleDao = umsRoleDao{}

// 用户角色表
// 这是 ums_role表 的实体类
type UmsRole struct {
	Id          int64     `json:"id" form:"id"`
	Name        string    `json:"name" form:"name"`               // 名称
	Description string    `json:"description" form:"description"` // 描述
	AdminCount  int32     `json:"admin_count" form:"admin_count"` // 后台用户数量
	CreateTime  time.Time `json:"create_time" form:"create_time"` // 创建时间
	Status      int32     `json:"status" form:"status"`           // 启用状态：0-&gt;禁用；1-&gt;启用
	Sort        int32     `json:"sort" form:"sort"`
}

// 注意:这是 UmsRole 的私有dao对象，只能在dao层内使用!
type umsRoleDao struct {
	Insert                  func(args UmsRole) (int64, error)
	UpdateByPrimaryKey      func(args UmsRole) (int64, error)
	DeleteByExample         func(ids []int64) (int64, error) `args:"ids"`
	InsertTemplate          func(args UmsRole) (int64, error)
	SelectByExample         func() ([]UmsRole, error)
	List                    func(args UmsRoleList) ([]UmsRole, error) //根据角色名称分页获取角色列表
	GetMenuListByRoleId     func(roleId int64) (UmsMenu, error)       `args:"role_id"` //根据roleId获取角色相关菜单
	GetResourceListByRoleId func(roleId int64) (UmsResource, error)   `args:"role_id"` //
}

type UmsRoleList struct {
	Keyword  string `json:"keyword" form:"keyword"`
	PageSize int64  `json:"page_size" form:"page_size"`
	PageNum  int64  `json:"page_num" form:"page_num"`
}

// 给用户分配角色 /admin/role/update
type UmsAdminUpdateRole struct {
	AdminId int64   `json:"admin_id" form:"admin_id"`
	RoleIds []int64 `json:"role_ids" form:"role_ids"`
}

// 给角色分配菜单
type UmsRoleAllocMenu struct {
	RoleId  int64   `json:"role_id" form:"role_id"`
	MenuIds []int64 `json:"menu_ids" form:"menu_ids"`
}
type UmsRoleAllocResource struct {
	RoleId      int64   `json:"role_id" form:"role_id"`
	ResourceIds []int64 `json:"resource_ids" form:"resource_ids"`
}

//// 用户角色表
//type UmsRole struct {
//	Id          int64     `json:"id" form:"id" uri:"id" v:"id"`
//	Name        string    `json:"name" form:"name" uri:"name" v:"name"`                             // 名称
//	Description string    `json:"description" form:"description" uri:"description" v:"description"` // 描述
//	AdminCount  int32     `json:"admin_count" form:"admin_count" uri:"admin_count" v:"admin_count"` // 后台用户数量
//	CreateTime  time.Time `json:"create_time" form:"create_time" uri:"create_time" v:"create_time"` // 创建时间
//	Status      int32     `json:"status" form:"status" uri:"status" v:"status"`                     // 启用状态：0-&gt;禁用；1-&gt;启用
//	Sort        int32     `json:"sort" form:"sort" uri:"sort" v:"sort"`
//}
